Producing HTML tables


Some times you need to produce html tables from existing database tables in some
cases like CGI programming. This example illustrates how to produce an html table
from Paradox, Foxpro, dBase tables or any other dataset:

Method 1: using HTML tags:

- Drop a
Table, an OpenDialog, and a Button.
- At
Filter property of OpenDialog1 write:

Database tables      *.db;*.dbf;

- Add
ShellApi to uses clause
- At Botton1
OnClick event write:

procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
F: TextFile;
begin
if OpenDialog1.Execute then
begin
 
(*** Open Source table ***)
   Screen.Cursor:= crHourGlass;
  Table1.TableName:= OpenDialog1.FileName;
  Table1.Open;

 
(*** Create HTML file ***)
  AssignFile(F,
    'c:\My Documents\Test.html');
  Rewrite(F);

 
(*** Header ***)
   Writeln(F, '');
  Writeln(F, 'Producing HTML tables');
  Writeln(F, '');
  Writeln(F, '

Producing HTML tables using Delphi

');
  Writeln(F, '

Source table: ' + Table1.TableName + '

');
  Writeln(F, '
');

 
(*** Table fields ***)
   Writeln(F, '');
  Writeln(F, ''); // Table row
   with Table1 do
  for i:= 0 to Fields.Count - 1 do
    Writeln(F, '
');
  Writeln(F, '
'); // end of Table row

 
(*** Display records ***)
   with Table1 do
  while not Eof do
  begin
    Writeln(F, '
');
    for i:= 0 to Fields.Count - 1 do
      Writeln(F, '
');
    Writeln(F, '
');
    Next;
  end;
// while

  Writeln(F, '
' + Fields[i].FieldName + '
', Fields[i].Value, '
');
  Writeln(F, '
Records count = ' + IntToStr(Table1.RecordCount));
  Writeln(F, '
' + DateTimeToStr(Now) + '');
  Writeln(F, '');
  Table1.Close;
  Screen.Cursor:= crDefault;
  CloseFile(F);
  ShellExecute(handle, 'open', 'c:\My Documents\Test.html',
    nil, nil, sw_ShowNormal);


end;
// if Open..

end;


Method 2: using DataSetTableProducer:

This is the fastest way and less code is used:

- Drop
DataSetTableProducer from Internet Page
- At DataSetTableProducer's
DataSet select your table or query you want to display.
- Expand
TableAttribute property of DataSetTableProducer, Set Border property to 1
- Set
MaxRows to -1 to dipsplay all the records in your dataset.
- Drop a button and write this code in it's
OnClick event:

var
List: TStringList;
begin
Table1.Open;
List:= TStringList.Create;
List.Text:= DataSetTableProducer1.Content;
List.SaveToFile('table.htm');
List.Free;
Table1.Close;
ShellExecute(handle, 'open', 'table.htm',
  nil, nil, sw_Normal);
end;

- Add
ShellApi to uses clause to use ShellExecute function.